Distributed dynamic memory management unit (mmu)-based secure inter-processor communication

ABSTRACT

A first processor and a second processor are configured to communicate secure inter-processor communications (IPCs) with each other. The first processor effects secure IPCs and non-secure IPCs using a first memory management unit (MMU) to route the secure and non-secure IPCs via a memory system. The first MMU accesses a first page table stored in the memory system to route the secure IPCs and accesses a second page table stored in the memory system to route the non-secure IPCs. The second processor effects at least secure IPCs using a second MMU to route the secure IPCs via the memory system. The second MMU accesses the second page table to route the secure IPCs.

DESCRIPTION OF THE RELATED ART

Portable computing devices (“PCDs”) are becoming necessities for peopleon personal and professional levels. These devices may include cellulartelephones, portable digital assistants (“PDAs”), portable gameconsoles, palmtop computers, and other portable electronic devices.

A system-on-a-chip (“SOC”) in a PCD is an integrated ASIC that can embedmultiple central processing units (“CPUs”), digital signal processors(“DSPs”), and various hardware (“HW”) functions for process accelerationand/or input/output (“I/O”) device communication. SOCs with multipleDSPs or CPUs typically require embedded inter-processor communication(“IPC”). Secure IPC between a source and a destination in an embeddedSOC may be required in some situations. For example, in an SOC that hasmore than two CPUs, two HW sub-systems with their own respective CPUsmay need to communicate securely. A simple threat model for secure IPCincludes preventing any third party software (“SW”) internally runningin the SOC (including from other embedded CPUs) from accessing messagesand data intended to be used exclusively by the producer and theconsumer of the information.

A typical solution for secure IPC is to employ some form or encryptionbetween a source and a destination. Although this may be the only optionfor physically separated entities, using encryption in embedded systemsmay add a prohibitive overhead. Contributors to such overhead can begrouped into three main categories: (a) management of secure keys (whichcome with some SW complexity and potential manufacturing cost overheadfor one-time password (OTP) key management); (b) bandwidth reduction dueto packet size increase; and (c) additional SW complexity and throughputreduction.

Modern computer systems use memory management units (“MMUs”) to managewriting data to and reading data from one or more physical memorydevices. An MMU of a computer system provides a virtual memory to theCPU of the computer system that allows the CPU to run each softwareprogram in its own dedicated, contiguous virtual memory address spacerather than having all of the application programs share the physicalmemory address space, which is often fragmented, or non-contiguous. Thepurpose of the MMU is to translate virtual memory addresses (“VAs”) intophysical memory addresses (“PAs”) for the CPU. The CPU indirectly readsand writes PAs by directly reading and writing VAs to the MMU, whichtranslates them into PAs and then writes or reads the PAs. EmployingMMUs in a PCD may provide advantages, such as enabling a CPU to run twodifferent operating systems, such as LINUX and ANDROID, each running inits own virtual memory space.

In order to perform the translations, the MMU accesses page tablesstored in the system main memory. The page tables comprise page tableentries. The page table entries represent information that is used bythe MMU to map the VAs into PAs.

SUMMARY OF THE DISCLOSURE

Embodiments of methods, systems and computer program products forproviding secure inter-processor communication on an integrated circuitchip are disclosed. In an exemplary embodiment, a system for providingsecure inter-processor communication on an integrated circuit chipcomprises a memory system and at least a first processor and a secondprocessor. A processor may be, for example, a central processing unit ora digital signal processor. The first processor is configured to effectsecure inter-processor communications and non-secure inter-processorcommunications using a first memory management unit to route the secureinter-processor communications and non-secure inter-processorcommunications via the memory system. The first memory management unitis configured to access a first page table stored in the memory systemto route the secure inter-processor communications and configured toaccess a second page table stored in the memory system to route thenon-secure inter-processor communications. The second processor isconfigured to effect at least secure inter-processor communicationsusing a second memory management unit to route the secureinter-processor communications via the memory system. The second memorymanagement unit is configured to access the second page table stored inthe memory system to route the secure inter-processor communications.

In the exemplary embodiment, a method for providing secureinter-processor communication on an integrated circuit chip comprises afirst processor and a second processor communicating secureinter-processor communications with each other. The first processoreffects secure inter-processor communications and non-secureinter-processor communications using a first memory management unit toroute the secure inter-processor communications and non-secureinter-processor communications via a memory system. The first memorymanagement unit accesses a first page table stored in the memory systemto route the secure inter-processor communications and accesses a secondpage table stored in the memory system to route the non-secureinter-processor communications. The second processor effects at leastsecure inter-processor communications using a second memory managementunit to route the secure inter-processor communications via the memorysystem. The second memory management unit accesses the second page tablestored in the memory system to route the secure inter-processorcommunications.

In the exemplary embodiment, an integrated circuit comprises means for afirst processor and a second processor to communicate secureinter-processor communications with each other. The means for the firstprocessor and second processor to communicate secure inter-processorcommunications with each other comprises means for the first processorto effect secure inter-processor communications and non-secureinter-processor communications using a first memory management unit toroute the secure inter-processor communications and non-secureinter-processor communications via a memory system. The first memorymanagement unit accesses a first page table stored in the memory systemto route the secure inter-processor communications and accessing asecond page table stored in the memory system to route the non-secureinter-processor communications. The means for the first processor andsecond processor to communicate secure inter-processor communicationswith each other further comprises means for the second processor toeffect secure inter-processor communications using a second memorymanagement unit to route the secure inter-processor communications viathe memory system. The second memory management unit accesses the secondpage table stored in the memory system to route the secureinter-processor communications.

In the exemplary embodiment, a computer program product comprises anon-transitory computer readable medium having computer readable programcode embodied therein. The computer readable program code comprisesfirst logic and second logic. The first logic configures a firstprocessor to effect secure inter-processor communications and non-secureinter-processor communications using a first memory management unit toroute the secure inter-processor communications and non-secureinter-processor communications via the memory system. The first memorymanagement unit is configured to access a first page table stored in thememory system to route the secure inter-processor communications andconfigured to access a second page table stored in the memory system toroute the non-secure inter-processor communications. The second logicconfigures a second processor to effect at least secure inter-processorcommunications using a second memory management unit to route the secureinter-processor communications and non-secure inter-processorcommunications via the memory system. The second memory management unitis configured to access the second page table stored in the memorysystem to route the secure inter-processor communications.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings, like reference numerals refer to like parts throughoutthe various views unless otherwise indicated. For reference numeralswith letter character designations such as “102A” or “102B”, the lettercharacter designations may differentiate two like parts or elementspresent in the same figure. Letter character designations for referencenumerals may be omitted when it is intended that a reference numeral toencompass all parts having the same reference numeral in all figures.

FIG. 1 is a block diagram illustrating an exemplary embodiment of asystem for providing secure inter-processor communication.

FIG. 2 is a block diagram illustrating another exemplary embodiment of asystem for providing secure inter-processor communication.

FIG. 3 is a block diagram illustrating still another exemplaryembodiment of a system for providing secure inter-processorcommunication.

FIG. 4 is a block diagram illustrating yet another exemplary embodimentof a system for providing secure inter-processor communication.

FIG. 5 is a block diagram of a portable computing device having secureinter-processor communication.

FIG. 6 is a flow diagram illustrating an exemplary embodiment of amethod for providing secure inter-processor communication.

FIG. 7 is a diagram illustrating translation of virtual addresses intophysical addresses.

DETAILED DESCRIPTION

The word “exemplary” is used herein to mean “serving as an example,instance, or illustration.” Any aspect described herein as “exemplary”is not necessarily to be construed as exclusive, preferred oradvantageous over other aspects.

In this description, the term “portable computing device” (“PCD”) isused to describe any computing device operating on a limited capacitypower supply, such as a battery. Although battery operated PCDs havebeen in use for decades, technological advances in rechargeablebatteries coupled with the advent of third generation (“3G”) and fourthgeneration (“4G”) wireless technology have enabled numerous PCDs withmultiple capabilities. Therefore, a PCD may be a cellular telephone, asatellite telephone, a pager, a personal digital assistant or PDA, asmartphone, a navigation device, a smartbook or reader, a media player,a combination of the aforementioned devices, or a laptop computer with awireless connection, among others.

In this description, the term “application” or “application program” mayinclude files having executable content, such as object code, scripts,byte code, markup language files, and patches. In addition, an“application” or “application program” referred to herein may alsoinclude files that are not executable in nature, such as documents thatmay need to be opened or other data files that need to be accessed.

As used in this description, the terms “component,” “database,”“module,” “system,” “processing component,” “multimedia processingcomponent” and the like are intended to refer to a computer-relatedentity, either hardware, firmware, a combination of hardware andsoftware, software, or software in execution. For example, a componentmay be, but is not limited to being, a process running on a processor, aprocessor, an object, an executable, a thread of execution, a program,and/or a computer. By way of illustration, both an application runningon a computing device and the computing device may be a component. Oneor more components may reside within a process and/or thread ofexecution, and a component may be localized on one computer and/ordistributed between two or more computers. In addition, these componentsmay execute from various computer readable media having various logic ordata structures stored thereon. The components may communicate by way oflocal and/or remote processes such as in accordance with a signal havingone or more data packets (e.g., data from one component interacting withanother component in a local system, distributed system, and/or across anetwork such as the Internet with other systems by way of the signal).

As illustrated in FIG. 1, an exemplary computing system 100 on anintegrated circuit chip (i.e., a so-called “system-on-a-chip” or “SOC”)includes a first processor 102, a second processor 104, and a memorysystem 106. At least one of first and second processors 102 and 104 maybe the type of processor commonly referred to as a central processingunit (“CPU”). The other of first and second processors 102 and 104 alsomay be a CPU, or it may be any other suitable type of processor, such asa digital signal processor (“DSP”) or another type of device thatprocesses information at least in part under software or firmwarecontrol, such as a PCIe interface. In accordance with conventionalcomputing principles, first and second processors 102 and 104 operateunder the control of software code, such as operating system code andapplication program code (not shown), which may be stored in memorysystem 106 or other memory (not shown).

First processor 102 includes a first memory management unit (“MMU”) 108,and second processor 104 includes a second MMU 110. Although MMUs 108and 110 are commonly implemented as hardware elements, alternatively,they can be implemented as software or firmware, i.e., logic thatconfigures the respective processors 102 and 104 to perform thefunctions described herein. It should be noted that the combination ofone or more software logic elements and the memory or other medium inwhich they are stored constitutes what is referred to in the patentlexicon as a “computer program product.”

As understood by one of ordinary skill in the art, MMUs 108 and 110manage writing data to and reading data from memory system 106. The MMUs108 and 110 provide their respective processors 102 and 104 withrespective virtual memory spaces that allow each of processors 102 and104 to run applications or other software in its own dedicated,contiguous virtual memory address space. Each of MMUs 108 and 110translates between virtual memory addresses (“VAs”) and physical memoryaddresses (“PAs”) for its respective processor 102 and 104. Asunderstood by one of ordinary skill in the art, in order to perform thetranslations, an MMU accesses page tables stored in memory system 106.

In the example shown in FIG. 1, MMU 108 points to or uses (indicated bybroken line) a non-secure page table 112 as part of the process fortransmitting or receiving a non-secure inter-processor communication(“IPC”), such as the exemplary non-secure message 114, but uses a securepage table 116 as part of the process for transmitting or receiving asecure IPC, such as the exemplary secure message 118. As used herein,the term “inter-processor communication” or “IPC” refers to a message orcommunication sent from one of processors 102 and 104 to the other or tostill another such processor (not shown). Such messages are routed viamemory system 106. That is, at some point during the process ofconveying a message from one processor to another, the message or aportion thereof is stored in memory system 106. Thus, in the exampleshown in FIG. 1, first MMU 108 configures first processor 102 to usesecure page table 116 in memory system 106 to route secure message 118to second processor 104 via memory system 106. Correspondingly, MMU 110configures second processor 104 to use that same secure page table 116to route or accept secure message 118 from memory system 106. In otherwords, the sharing of secure page table 116 by MMUs 108 and 110 enablesthem to communicate secure messages. The memory segmentation andisolation properties of MMUs 108 and 110 maintain the security ofmessages managed using the shared secure page table 116. As suchproperties are understood by one of ordinary skill in the art, they arenot described in further detail herein. Similarly, with the exception ofthis security feature, the general manner in which a processorcommunicates a message to another processor in an SOC is understood byone of ordinary skill in the art. Therefore, such general orconventional aspects of inter-processor communication in SOC 100 are notdescribed in further detail herein. In the example shown in FIG. 1,first MMU 108 also configures first processor 102 to use non-secure pagetable 112 in memory system 106 to route non-secure message 114 to yetanother processor (not shown) via memory system 106. First MMU 108prevents first processor 102 from using secure page table 116 to routenon-secure messages. Although page tables 112 and 116 are shown in FIG.1 as stored in or residing in memory system 106, it should be understoodthat processors 102 and 104 may retrieve and store portions of theminternally.

An example of how an MMU may translate VAs into PAs is conceptuallyillustrated in FIG. 7. The translations are performed in two stages. Inthis example, two first-stage translations 702 and 704 and onesecond-stage translation 706 are shown. Translations 702, 704 and 706are based upon a page table (not shown in FIG. 7). Each of one or morevirtual address maps 708 corresponds to a thread of execution on aprocessor. Similarly, each of one or more virtual address maps 710corresponds to a thread of execution on a processor, which may be thesame or a different processor from that on which threads correspondingto virtual address maps 708 execute. The sub-blocks within each ofvirtual address maps 708 represent blocks of addresses. The arrowsrepresent address translations. With respect to an exemplary one virtualaddress maps 708, the MMU uses the page table to translate the virtualaddress map 708 into an intermediate physical address map 712.Similarly, with respect to an exemplary one of virtual address maps 710,the MMU uses the page table to translate the virtual address map 710into another intermediate physical address map 714. The MMU then usesthe page table to translate the intermediate physical address maps 712and 714 into a physical address (PA) map 716.

As illustrated in FIG. 2, an exemplary computing system 200 on anintegrated circuit chip (i.e., an SOC) includes a first CPU 202, asecond CPU 204, and a memory system 206. A network-on-chip (“NOC”) 208serves as a means for routing secure and non-secure IPCs or messagesbetween CPUs 202 and 204 via memory system 206. The NOC 208 essentiallycomprises one or more buses, as understood by one of ordinary skill inthe art.

First CPU 202 operates under the control of software code that mayinclude a first MMU 210, a first secure memory segmentation softwarelayer (“MS-SWL”) 212, a first (non-secure) application program 214, anda first secure application program 216. An example of a secureapplication program that may need to communicate secure messages withother processors is a Digital Rights Management (“DRM”) application. TheMMU 210 and MS-SWL 212 function as software layers or interfaces betweenthe functionality of application programs 214 and 216 and memory system206. The MS-SWL 212 may operate in a privileged or exception-level mode,which one of ordinary skill in the art understands refers to therestriction of access to a limited subset of registers in CPU 202 by anapplication program having a privilege level corresponding to thatsubset. It should be understood that a reference in this description toan application program performing an action is for purposes of clarityor brevity, and that in actuality it is the CPU operating under controlof the application program that performs the action. The MS-SWL 212 thusperforms a function of filtering access to higher software layers byincoming IPC, such as access to secure application program 216.

Similarly, second CPU 204 operates under the control of software codethat may include a second MMU 218, a second MS-SWL 220, a second(non-secure) application program 222, and a second secure applicationprogram 224. The MMU 210 and MS-SWL 220 function as software layers orinterfaces between application programs 214 and 216 and memory system206.

In the example shown in FIG. 2, MMU 202 uses a non-secure page table 226as part of the process for transmitting or receiving a non-secure IPC,such as the exemplary non-secure message 228, but uses a secure pagetable 230 as part of the process for transmitting or receiving a secureIPC, such as the exemplary secure message 232. Messages 228 and 232 arerouted via memory system 206. Thus, in the example shown in FIG. 2,first MMU 210 configures first CPU 202 to use secure page table 230 inmemory system 206 to route secure message 232 to second CPU 204 viamemory system 206. Correspondingly, MMU 218 configures second CPU 204 touse that same secure page table 230 to receive or accept secure message232 from memory system 206. In other words, the sharing of secure pagetable 230 by MMUs 210 and 218 enables them to communicate securemessages. The memory segmentation and isolation properties of MMUs 210and 218 maintain the security of messages managed using the sharedsecure page table 230. In the example shown in FIG. 2, MMU 210 alsoconfigures CPU 202 to use non-secure page table 226 in memory system 206to route non-secure message 228 to second CPU 204 via memory system 206.The memory segmentation and isolation properties of MMU 210 prevent CPU202 from using secure page table 230 to produce or route non-securemessages and prevent CPU 202 from using non-secure page table 226 toproduce or route secure messages. Likewise, the memory segmentation andisolation properties of MMU 210 prevent CPU 204 from using secure pagetable 230 to access or “consume” (i.e., use as input) non-securemessages and prevent CPU 204 from using non-secure page table 226 toaccess or consume secure messages.

As illustrated in FIG. 3, an exemplary computing system 300 on anintegrated circuit chip (i.e., an SOC) includes a first CPU 302, asecond CPU 304, a DSP 306, a memory system 308, and a cache memory 310.An NOC 312 serves as a means for routing secure and non-secure IPCs ormessages among CPU 302, CPU 304 and DSP 306 via memory system 308 orcache memory 310. Although messages and software elements are shown forpurposes of clarity in FIG. 3 as being routed via memory system 308,alternatively, some or all may be routed via cache memory 310.

First CPU 302 operates under the control of software code that mayinclude a first MMU 314 (other software elements are not shown forpurposes of clarity). Second CPU 304 operates under the control ofsoftware code that may include a second MMU 316, an MS-SWL 318, ahigh-level operating system kernel (“HLOS”) 320, and a secureapplication program 322. In this example, CPU 304 may be ageneral-purpose CPU that controls the overall or high-level operation ofSOC 300, while CPU 302 controls a more specific function within SOC 300,and DSP 306 controls a function such as processing confidential datacaptured by sensors (not shown) external to SOC 300. It should be notedthat MS-SWL 318 runs in a mode that prevents HLOS 320 from corruptingthe IPC feature of MS-SWL 318. The execution mode could consist of aseparate CPU exception regime providing access to authorized hardwareresources existing in SOC 300. Additionally, the IPC software of MS-SWL318 may be signed and then authenticated prior to execution. The IPCsoftware may be encrypted and then decrypted at boot time, using privateand public keys embedded in SOC 300.

The DSP 306 operates in part under control of a system secure memorymanagement unit (“SMMU”) 324. An SMMU is similar to an MMU but isgenerally associated with a hardware element that processes informationin a more specific manner than a CPU. An example of such a hardwareelement is an input/output (“I/O”) device controller, such as a PCIeinterface or a SATA drive.

In the example shown in FIG. 3, MMU 314 prevents CPU 302 from accessingsecure IPC, such as secure message 326, which is communicated betweenCPU 304 and DSP 306, because MMU 314 is restricted to using thenon-secure page table 328 and restricted from using the secure pagetable 330. However, CPU 302 and CPU 304 are capable of communicatingnon-secure IPC, such as non-secure message 332, with each other becausetheir respective MMUs 314 and 316 share non-secure page table 328. Inaddition, CPU 304 and DSP 306 are capable of communicating secure IPC,such as secure message 326, with each other because MMU 316 and SMMU 324share secure page table 330. Note that this configuration effectivelydefines a secure point-to-point (i.e., processor-to-processor)communication channel between CPU 304 and DSP 306.

Also, in the example shown in FIG. 3, MS-SWL 318 can securely provideconfiguration information to DSP 306 and any other DSPs or other suchprocessors that require secure configuration information. Suchconfiguration information received by DSP 306 is used to configure SMMU324.

As illustrated in FIG. 4, an exemplary computing system 400 on anintegrated circuit chip (i.e., an SOC) includes a first CPU 402, asecond CPU 404, a first DSP 406, a second DSP 408, and a memory system410. An NOC 412 serves as a means for routing secure and non-secure IPCsor messages among CPU 402, CPU 404, DSP 406 and DSP 408 via memorysystem 410.

First CPU 402 operates under the control of software code that mayinclude a first MMU 414 (other software elements are not shown forpurposes of clarity). Second CPU 404 operates under the control ofsoftware code that may include a second MMU 416, an MS-SWL 418, an HLOS420, and a secure application program 422. In this example, CPU 404 maybe a general-purpose CPU that controls the overall or high-leveloperation of SOC 400, while CPU 402 controls a more specific functionwithin SOC 400, and DSPs 406 and 408 control functions such asprocessing confidential data captured by sensors (not shown) external toSOC 400. It should be noted that MS-SWL 418 runs in a mode that preventsHLOS 420 from corrupting the IPC feature of MS-SWL 418. The executionmode could consist of a separate CPU exception regime providing accessto authorized hardware resources existing in SOC 400. Additionally, theIPC software of MS-SWL 418 may be signed and then authenticated prior toexecution. The IPC software may be encrypted and then decrypted at boottime, using private and public keys embedded in SOC 400.

First DSP 406 operates under the control of software code that mayinclude an SMMU 424, an MS-SWL 426, and a secure DSP application program428. Second DSP 408 operates under the control of software code that mayinclude an SMMU 430, an MS-SWL 432, and a secure DSP application program434.

In the example shown in FIG. 4, CPUs 402 and 404 are capable ofcommunicating non-secure IPC with each other in the same mannerdescribed above with regard to CPUs 302 and 304 in FIG. 3. That is,their respective MMUs 414 and 416 share a non-secure page table 436 tocommunicate a non-secure message 438. In addition, in this example CPU404 is configured by means of MMU 416 to broadcast a secure message 440over NOC 412 in a network-like manner. With regard to DSP 406, SMMU 424receives secure message 440 via NOC 412 because SMMU 424 shares a securepage table 442 with MMU 416, but MS-SWL 426 is configured to act as afilter to block secure message 440 from being consumed by secure DSPapplication program 428 or any other higher-level software elements (notshown) associated with the operation of DSP 406. (In FIG. 4 the “x”symbol in the arrow from MS-SWL426 to DSP application program 428represents filtering or blocking.) In this manner, only a processor thatis an intended recipient of the secure message will be able to consumeit. With regard to DSP 408, SMMU 430 receives secure message 440 via NOC412 because SMMU 430 shares secure page table 442 with MMU 416, andMS-SWL 432 is configured to pass (i.e., selectively filter) securemessage 440 so that it can be consumed by secure DSP application program434. In this example, DSP 408 is an intended recipient of secure message440.

As illustrated in FIG. 5, a portable computing device 500 includes asystem-on-a-chip (SOC) 502. The SOC 502 may be an ASIC or otherintegrated circuit. The SOC 502 includes one or more CPUs 504, one ormore graphics processing units (“GPUs”) 506, and one or more DSPs 508.Any of the foregoing processors may embody the processors describedabove with regard to FIGS. 1-4 and accordingly may operate in part undercontrol of the above-described software elements, such as an MMU/SMMU,MS-SWL and application programs. The processors and other devices shownFIG. 5 may be interconnected via an NOC, although the NOC is not shownin FIG. 5 for purposes of clarity.

A display controller 510 and a touch screen controller 512 arc coupledto CPU 504. A touch screen display 514 external to SOC 502 is coupled todisplay controller 510 and touch screen controller 512. The PCD 500 mayfurther include a video encoder 516, e.g., a phase-alternating line(“PAL”) encoder, a Sequential Couleur Avec Memoire (“SECAM”) encoder, aNational Television System(s) Committee (“NTSC”) encoder, coupled to CPU504. A video amplifier 518 is coupled to video encoder 516 and touchscreen display 514. A video port 520 is coupled to video amplifier 518.A universal serial bus (“USB”) controller 522 is coupled to CPU 504, anda USB port 524 is in turn coupled to USB controller 522.

A memory 526 is coupled to CPU 504. Memory 526 may embody any of thememory systems described above with regard to FIGS. 1-4.

Further devices or elements that are coupled to CPU 504 include asubscriber identity module (“SIM”) card 528, front/rear digital camera(image) sensors 530, stereo speakers 532 and 534, a microphone 536, andstereo headphones 538. An image sensor processor 540 may couplefront/rear camera sensors 530 to CPU 504. A stereo audio CODEC 542 andan audio amplifier 544 may couple stereo speakers 532 and 534 to CPU504. Stereo audio CODEC 542 and a microphone amplifier 546 may couplemicrophone 536 to CPU 504. A frequency modulation (“FM”) radio tuner 548and an FM antenna 550 also may be coupled to stereo audio CODEC 542.

A radio frequency (“RF”) transceiver 552 may be coupled to an analogsignal processor 554. An RF switch 556 may be coupled to the RFtransceiver 552 and an RF antenna 558. A keypad 560, a mono headset witha microphone 562, and a vibrator device 564 may be coupled to CPU 504via the analog signal processor 554.

A power supply 566, such as a battery system, may be coupled SOC 502through a power management integrated circuit (“PMIC’) 568. Power supply566 includes a rechargeable DC battery or a DC power supply that isderived from an alternating current (“AC”) to DC transformer that isconnected to an AC power source (not shown).

Note that touch screen display 514, video port 520, USB port 524,front/rear camera sensors 530, stereo speakers 532 and 534, microphone536, FM antenna 550, stereo headphones 538, RF switch 556, RF antenna558, keypad 560, mono headset 562, vibrator 564, power supply 566, andPMIC 568 are external to SOC 502. The system, method, integratedcircuit, and computer-readable medium described in this specificationprovide secure communication among processors on SOC 502.

It should be noted that the combination of one or more of the softwareelements described above with regard to FIGS. 1-4 and memory 526 (FIG.5) or any other such non-transitory computer-readable medium constitutesa “computer program product” as that term is understood in the patentlexicon. More generally, a computer-readable medium is an electronic,magnetic, optical, or other physical device or means that can contain orstore a computer program and data for use by or in connection with acomputer-related system or method. The various logic elements and datastores may be embodied in any computer-readable medium for use by or inconnection with an instruction execution system, apparatus, or device,such as a computer-based system, processor-containing system, or othersystem that can fetch the instructions from the instruction executionsystem, apparatus, or device and execute the instructions.

A computer-readable medium can be, for example, an electronic, magnetic,optical, electromagnetic, infrared, or semiconductor system, apparatusor device, including but not limited to the following (non-exhaustivelist): a random-access memory (“RAM”), a read-only memory (“ROM”), anelectrically erasable programmable read-only memory (“EEPROM”), a FLASHmemory module, a magnetic disk, an optical medium such as a compact discread-only memory (CDROM), and a Blu-ray disc.

More specifically, and with reference to FIGS. 1-4, a first MMU or,alternatively, a first MMU in combination with a first MS-SWL, stored ina computer-readable medium may define first logic that configures afirst processor to effect secure and non-secure IPCs by using the firstMMU to route the secure and non-secure IPCs via a memory system.Similarly, an MMU or, alternatively, an MMU in combination with anMS-SWL, stored in a computer-readable medium may define second logicthat configures a second processor to effect at least secure (and, insome embodiments, non-secure) IPCs by using the second MMU to route atleast the secure IPCs via the memory system.

An exemplary embodiment of a method for providing secure IPC isillustrated by the flow diagram 600 of FIG. 6. Certain steps or actionsdescribed with regard to FIG. 6 naturally precede others for the methodto function as described. However, the invention is not limited to theorder of the steps described if such order or sequence does not alterthe functionality of the invention. That is, it is recognized that somesteps may performed before, after, or in parallel (effectivelysimultaneously) with other steps without departing from the scope andspirit of the invention. In some instances, certain steps may be omittedor not performed without departing from the invention. Further, wordssuch as “thereafter”, “then”, “next”, etc. are not intended to limit theorder of the steps. These words are simply used to guide the readerthrough the description of the exemplary method.

As indicated by block 602, a first processor produces or initiates asecure message. In other words, for example, an application program orhigh-level operating system executing on the processor may initiate thesecure message. The first processor may be, for example, a CPU. Asindicated by block 604, a first MMU executing on the first processorpoints to or otherwise accesses a secure page table in memory. Asindicated by block 606, the first MMU routes the secure message via amemory.

As indicated by block 608, the first processor may also produce orinitiate a non-secure message. In other words, for example, anapplication program or high-level operating system executing on theprocessor may initiate the non-secure message. As indicated by block610, the first MMU points to or otherwise accesses a non-secure pagetable in memory. As indicated by block 612, the first MMU routes thenon-secure message via a memory.

A second processor receives and consumes at least the secure message butmay also receive and consume the non-secure message, or still anotherprocessor may receive and consume the non-secure message. The secondprocessor may be, for example, a CPU or a DSP or other processor thatconsumes secure IPC. As indicated by block 614, a second MMU executingon the second processor points to or otherwise accesses the secure pagetable in memory. As indicated by block 616, the second MMU routes thesecure message from the memory to the second processor. Consequently, anapplication program executing on the second CPU may consume the receivedsecure message.

One of ordinary skill in programming is able to write computer code oridentify appropriate hardware and/or circuits to implement the disclosedinvention without difficulty based on flow diagram 600 and associateddescription in this specification. Therefore, disclosure of a particularset of program code instructions or detailed hardware devices is notconsidered necessary for an adequate understanding of how to make anduse the invention. The inventive functionality of the claimedcomputer-implemented method is explained in more detail in the abovedescription and in conjunction with the drawings, which may illustratevarious process flows.

Therefore, although selected aspects have been illustrated and describedin detail, it will be understood that various substitutions andalterations may be made therein without departing from the spirit andscope of the present invention, as defined by the following claims.

1-33. (canceled)
 34. A system for providing security in inter-processorcommunication on an integrated circuit chip, the system comprising: ashared memory system; a first processor in communication with the sharedmemory system, the first processor configured to effect secureinter-processor communications and non-secure inter-processorcommunications using a first memory management unit to separately routethe secure inter-processor communications and the non-secureinter-processor communications via the shared memory system, and asecond processor in communication with the shared memory system, thesecond processor configured to effect at least secure inter-processorcommunications using a second memory management unit to route the secureinter-processor communications via the shared memory system, the firstprocessor executes a first secure memory segmentation software layer, anon-secure application program, and a secure application program,non-secure inter-processor communications issued by the non-secureapplication program being routed to the first memory management unit viathe first secure memory segmentation software layer, secureinter-processor communications associated with the secure applicationprogram being routed between the secure application program and thefirst memory management unit via the first secure memory segmentationsoftware layer.
 35. The system of claim 34, wherein the first memorymanagement unit is configured to access a first secure page table storedin the shared memory system to route the secure inter-processorcommunications and access a separate second non-secure page table storedin the shared memory system to route the non-secure inter-processorcommunications.
 36. The system of claim 34, wherein the second memorymanagement unit is configured to access the first secure page tablestored in the shared memory system to route the secure inter-processorcommunications.
 37. The system of claim 34, wherein the second processorexecutes a second secure memory segmentation software layer.
 38. Thesystem of claim 35, wherein: the first processor is a central processingunit; and the second processor is a central processing unit, the secondmemory management unit being further configured to access the separatesecond non-secured page table stored in the shared memory system. 39.The system of claim 34, wherein the first processor is a centralprocessing unit.
 40. The system of claim 34, wherein the secondprocessor is a digital signal processor.
 41. The system of claim 34,wherein secure inter-processor communications associated with the secureapplication program are routed between the secure application programand the first memory management unit via the secure memory segmentationsoftware layer, secure inter-processor communications associated withthe secure application program are broadcast across a network on theintegrated circuit chip.
 42. The system of claim 41, wherein the secureapplication program is a first secure application program, the secondprocessor executes a second secure application program, the secondsecure memory segmentation software layer selectively providing secureinter-processor communications received on the network to the secondsecure application program by determining whether a secureinter-processor communication received on the network indicates thesecond secure application program is an intended recipient.
 43. Thesystem of claim 34, wherein the memory system is a cache memory on theintegrated circuit chip.
 44. A method for providing security ininter-processor communication on an integrated circuit chip, comprising:a first processor and a second processor communicating secureinter-processor communications with each other via a shared memorysystem; wherein the first processor in communication with the sharedmemory system effects secure inter-processor communications andnon-secure inter-processor communications using a first memorymanagement unit to separately route the secure inter-processorcommunications and the non-secure inter-processor communications via theshared memory system; and wherein the second processor in communicationwith the shared memory system effects at least secure inter-processorcommunications using a second memory management unit to route the secureinter-processor communications via the shared memory system, wherein thefirst processor executes a first secure memory segmentation softwarelayer, a non-secure application program, and a secure applicationprogram, non-secure inter-processor communications issued by thenon-secure application program being routed to the first memorymanagement unit via the first secure memory segmentation software layer,secure inter-processor communications associated with the secureapplication program being routed between the secure application programand the first memory management unit via the first secure memorysegmentation software layer.
 45. The method of claim 44, wherein thefirst memory management unit accesses a first secure page table storedin the memory system to route the secure inter-processor communicationsand accesses a separate second non-secure page table stored in thememory system to route the non-secure inter-processor communications.46. The method of claim 44, wherein the second memory management unitaccesses the first secure page table stored in the shared memory systemto route the secure inter-processor communications.
 47. The method ofclaim 44, wherein the second processor executes a second secure memorysegmentation software layer.
 48. The method of claim 44, wherein: thefirst processor is a central processing unit; and the second processoris a central processing unit, the second memory management unit furtheraccessing the separate second non-secured page table stored in theshared memory system.
 49. The method of claim 48, wherein the firstprocessor executes a non-secure high-level operating system, non-secureinter-processor communications associated with the non-secure high-leveloperating system being routed between the non-secure high-leveloperating system and the first memory management unit via the firstsecure memory segmentation software layer, secure inter-processorcommunications associated with the secure application program beingrouted between the secure application program and the first memorymanagement unit via the first secure memory segmentation software layer.50. The method of claim 44, wherein: the first processor is a centralprocessing unit; and the second processor is digital signal processor.51. The method of claim 44, wherein secure inter-processorcommunications associated with the secure application program beingrouted between the secure application program and the first memorymanagement unit via the first secure memory segmentation software layer,secure inter-processor communications associated with the first secureapplication program being broadcast across a network on the integratedcircuit chip.
 52. The method of claim 51, wherein the secure applicationprogram is a first secure application program, wherein the secondprocessor executes a second secure application program, the secondsecure memory segmentation software layer selectively providing secureinter-processor communications received on the network to the secondsecure application program by determining whether a secureinter-processor communication received on the network indicates thesecond secure application program is an intended recipient.
 53. Themethod of claim 44, wherein the shared memory system is a cache memoryon the integrated circuit chip.
 54. An integrated circuit chip,comprising: means for a first processor and a second processor tocommunicate secure inter-processor communications with each other, eachof the first processor and the second processor in communication with ashared memory system, means for the first processor to effect secureinter-processor communications and non-secure inter-processorcommunications using a first memory management unit to separately routethe secure inter-processor communications and the non-secureinter-processor communications via the shared memory system; and meansfor the second processor to effect secure inter-processor communicationsusing a second memory management unit to route the secureinter-processor communications via the shared memory system, the firstprocessor executing a first secure memory segmentation software layer, anon-secure application program, and a secure application program, suchthat non-secure inter-processor communications issued by the non-secureapplication program are routed to the first memory management unit viathe first secure memory segmentation software layer, secureinter-processor communications associated with the secure applicationprogram are routed between the secure application program and the firstmemory management unit via the first secure memory segmentation softwarelayer.
 55. The integrated circuit chip of claim 54, wherein the firstmemory management unit accesses a first secure page table stored in theshared memory system to route the secure inter-processor communicationsand accesses a separate second non-secure page table stored in theshared memory system to route the non-secure inter-processorcommunications.
 56. The integrated circuit chip of claim 54, wherein thesecond memory management unit accessing the first secured page tablestored in the shared memory system to route the secure inter-processorcommunications.
 57. The integrated circuit chip of claim 54, wherein themeans for the second processor to communicate secure inter-processorcommunications comprises means for executing a second secure memorysegmentation software layer.
 58. The integrated circuit chip of claim54, wherein: the first processor is a central processing unit; and thesecond processor is a central processing unit, the second memorymanagement unit further accessing the separate second non-secured pagetable stored in the shared memory system.
 59. A computer program productcomprising a non-transitory computer readable medium having computerreadable program code embodied therein, said computer readable programcode comprising: first logic configuring a first processor to effectsecure inter-processor communications and non-secure inter-processorcommunications using a first memory management unit to separately routethe secure inter-processor communications and the non-secureinter-processor communications via a shared memory system; and secondlogic configuring a second processor to effect secure inter-processorcommunications and non-secure inter-processor communications using asecond memory management unit to route the secure inter-processorcommunications and non-secure inter-processor communications via thememory system, wherein the first logic includes a first secure memorysegmentation software layer, a non-secure application program, and asecure application program, non-secure inter-processor communicationsissued by the non-secure application program being routed to the firstmemory management unit via the first secure memory segmentation softwarelayer, secure inter-processor communications associated with the secureapplication program being routed between the secure application programand the first memory management unit via the first secure memorysegmentation software layer.
 60. The computer program product of claim59, wherein the first memory management unit is configured to access afirst secure page table stored in the shared memory system to route thesecure inter-processor communications and to access a separate secondnon-secure page table stored in the shared memory system to route thenon-secure inter-processor communications.
 61. The computer programproduct of claim 59, wherein the second memory management unit isconfigured to access the first secure page table stored in the memorysystem to route the secure inter-processor communications.
 62. Thecomputer program product of claim 59, wherein the second logic includesa second secure memory segmentation software layer.
 63. The computerprogram product of claim 59, wherein the first logic includes anon-secure high-level operating system, non-secure inter-processorcommunications associated with the non-secure high-level operatingsystem being routed between the non-secure high-level operating systemand the first memory management unit via the secure memory segmentationsoftware layer, secure inter-processor communications associated withthe secure application program being routed between the secureapplication program and the first memory management unit via the securememory segmentation software layer.